﻿using System;
using LayerEntity.Persona ;

namespace System2012.Persona.UserControls
{
    public partial class UCCuentaCorriente : DevExpress.XtraEditors.XtraUserControl
    {
        public UCCuentaCorriente()
        {
            this.InitializeComponent();
        }

        #region Variables

        int tipoCuenta = 0;

        LayerLogic.EnumOperaciones ope = LayerLogic.EnumOperaciones.Insertar;
        public LayerLogic.EnumOperaciones Operacion
        {
            get
            {
                return this.ope;
            }
        }

        #endregion

        #region Metodos

        internal void SetCuentaCorriente(ECuentasCorrientes ctacteInfo)
        {
            this.ope = LayerLogic.EnumOperaciones.Actualizar;
            this.TxtCodigo.EditValue = ctacteInfo.IdCtaCte;
            this.TxtNumeroCuenta.EditValue = ctacteInfo.NumeroCuenta;
            this.TxtCci.EditValue = ctacteInfo.Cci;
            this.CbMoneda.EditValue = ctacteInfo.IdMoneda;
            this.TxtIdBanco.EditValue = ctacteInfo.IdBanco;
            this.tipoCuenta = ctacteInfo.IdTipoCtaCte;
        }
        
        internal void NuevaCuenta(int tipo)
        {
            this.NuevaCuenta();
            this.tipoCuenta = tipo;
        }

        internal void NuevaCuenta()
        {
            this.ope = LayerLogic.EnumOperaciones.Insertar;
            this.TxtCci.Text = string.Empty;
            this.TxtCodigo.EditValue = "0";
            
            this.TxtIdBanco.EditValue = string.Empty;
            this.TxtNumeroCuenta.EditValue = string.Empty;
        }

        internal void LoadMoneda()
        {
            this.BGWLoadMoneda.RunWorkerAsync();
        }

        #endregion

        #region Funciones

        internal ECuentasCorrientes GetCuentaCorriente()
        {
            ECuentasCorrientes cta = null;
            bool valid = true;
            if (this.TxtNumeroCuenta.EditValue == null | string.IsNullOrEmpty(this.TxtNumeroCuenta.EditValue.ToString()))
            {
                SystemUtils.AlerMessaje("Ingrese el Numero de Cuenta");
                this.TxtNumeroCuenta.Focus();
                valid = false;
            }

            if (this.TxtIdBanco.EditValue == null)
            {
                SystemUtils.AlerMessaje("Seleccione un Banco");
                this.TxtIdBanco.Focus();
                valid = false;
            }

            if (this.CbMoneda.EditValue == null)
            {
                SystemUtils.AlerMessaje("Seleccione una Moneda");
                this.CbMoneda.Focus();
                valid = false;
            }
            if (valid)
            {
                cta = new ECuentasCorrientes();
                cta.Cci = this.TxtCci.EditValue.ToString();
                cta.IdBanco = int.Parse(this.TxtIdBanco.EditValue.ToString());
                cta.IdCtaCte = int.Parse(this.TxtCodigo.EditValue.ToString());
                cta.IdEstado = 1;
                cta.IdMoneda = int.Parse(this.CbMoneda.EditValue.ToString());

                cta.NumeroCuenta = this.TxtNumeroCuenta.EditValue.ToString();
                if (this.Operacion == LayerLogic.EnumOperaciones.Actualizar)
                {
                    cta.IdCtaCte = Convert.ToInt32(this.TxtCodigo.EditValue.ToString());
                }
            }
            return cta ;
        }

        #endregion
        int intOperacion = 0;
        private void BgwLoadMonedaDoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
        {
            if (this.intOperacion == 0)
            {
                e.Result = SystemUtils.RecordManagerCommonList.GetMoneda();
            }
            else
            {
                e.Result = SystemUtils.RecordmanagerCaja.GetBancos();
            }
        }

        private void BgwLoadMonedaRunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e)
        {
            if (this.intOperacion == 0)
            {
                this.CbMoneda.Properties.DataSource = e.Result;
                this.intOperacion = 1;
                this.BGWLoadMoneda.RunWorkerAsync();
            }
            else
            {
                this.TxtIdBanco.Properties.DataSource = e.Result;
            }
        }

        private void UCCuentaCorriente_Load(object sender, EventArgs e)
        {
        }

        private void PresionandoTeclas(object sender, System.Windows.Forms.KeyEventArgs e)
        {
            if (CbMoneda == sender || TxtIdBanco == sender)
            {
                if (e.KeyCode == System.Windows.Forms.Keys.Enter)
                {
                    System.Windows.Forms.SendKeys.Send("{TAB}");
                }
                if (e.KeyCode == System.Windows.Forms.Keys.Up)
                {
                    SelectNextControl((System.Windows.Forms.Control)sender, false, true, true, true);
                }
            }
            else {
                if (e.KeyCode == System.Windows.Forms.Keys.Enter || e.KeyCode ==System.Windows.Forms.Keys.Down )
                {
                    System.Windows.Forms.SendKeys.Send("{TAB}");
                }
                if (e.KeyCode == System.Windows.Forms.Keys.Up)
                {
                    SelectNextControl((System.Windows.Forms.Control)sender, false, true, true, true);
                }
            }
        }
    }
}